Massive UI work
[juce-lv2.git] / juce / source / docs / JUCE readme.html
blob1a45d956287f254ed3585d0339861a572eff219b
1 <?xml version="1.0" encoding="windows-1250"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7 <meta http-equiv="Content-Language" content="en-us" />
8 <meta name="description" content="Raw Material Software" />
9 <meta name="keywords" content="audio, music, juce, tracktion, c++, sequencer, library, programming, software, julian storer$otherkeywords" />
10 <meta name="robots" content="index,follow" />
11 <title>JUCE - installation and compiling</title>
12 <link href="rawmat.css" rel="stylesheet" type="text/css" media="all" />
13 </head>
15 <body>
16 <div class="pageholder">
18 <div class="banner">
19 <a href="http://www.rawmaterialsoftware.com">
20 <img src="images/rms_logo.gif" alt="raw material software" title="raw material software"/></a>
21 </div>
23 <p><a href="#intro">Introduction</a> - <a href="#license">License</a> -
24 <a href="#install">Installation</a> -
25 <a href="#buildvc">Building with Visual Studio</a> -
26 <a href="#buildvc6">Building with VC6</a> -
27 <a href="#buildxcode">Building with XCode</a> -
28 <a href="#buildlinux">Building on Linux</a> -
29 <a href="#buildandroid">Building with Android</a> -
30 </p>
32 <h1>JUCE</h1>
34 <h2><a name="intro"></a>Introduction</h2>
36 <p>JUCE is an all-encompassing C++ class library for developing cross-platform applications and plugins.</p>
37 <p>For lots more help and information, please visit the <a href="http://www.rawmaterialsoftware.com/juce">JUCE website</a>.</p>
38 <p>A complete set of class documentation is available <a href="http://www.rawmaterialsoftware.com/juce/api/index.html" target="juce api">here</a>.</p>
40 <h2><a name="license"></a>License</h2>
42 <p>JUCE is released under the <a href="http://www.gnu.org/copyleft/gpl.html">Gnu Public License</a>,
43 which means it can be freely copied and distributed, and costs nothing to use in open-source applications.</p>
44 <p>If you'd like to release a closed-source application that uses JUCE, commercial licenses are available
45 for a fee - click <a href="http://www.rawmaterialsoftware.com/jucelicense.php">here</a> for more information
46 on pricing and terms.</p>
48 <h2><a name="install"></a>Installation</h2>
50 <h3>Installing the source code</h3>
52 <p>There are a few ways to install a copy of JUCE:</p>
53 <ul>
54 <li>You can download a zip file containing the last stable release from <a href="http://sourceforge.net/projects/juce/files/juce/">the JUCE downloads section on SourceForge</a></li>
55 <li>Download the GIT repository: To grab the latest bleeding-edge version of the code, you can use the command:
56 <br><code>git clone --depth 1 git://juce.git.sourceforge.net/gitroot/juce/juce</code></li>
57 <li>Download via the Introjucer: The Introjucer is JUCE's tool for creating and managing JUCE projects, and it also
58 includes a handy tool which lets you download the latest (bleeding-edge) version of JUCE without needing to install GIT. To use this,
59 just download a binary of the Introjucer from <a href="http://sourceforge.net/projects/juce/files/juce/">SourceForge</a>,
60 and run it - its 'update' menu contains an option to download JUCE.</li>
61 </ul>
62 <p>The JUCE source code all lives in a folder called, unsurprisingly, <code>juce</code>, which you can unzip
63 and put somewhere on your system.</p>
65 <h3>Building the demo applications</h3>
67 <p>In the <code>juce/extras</code> folder, there are a few demo apps to get you started and to show off JUCE's features.
68 Each one contains a folder called <code>Builds</code>, containing various projects for different compilers and platforms.
69 These should all work straight out-of-the-box if you load them into the appropriate development environment. Some of them
70 (e.g. the audio plugin demo) may require 3rd party libraries or headers to have been installed, but I've made sure that any
71 include statements that may not be present have comments with a detailed explanation of what's going on, so if you hit a compile
72 error, just have a look at the code it's pointing to and everything should become clear.</p>
74 <h2>Creating a new application with the Introjucer</h2>
76 <p>By far the easiest way to create a new cross-platform JUCE app (or audio plugin) is to let the Introjucer
77 do the hard work of creating all your projects with the correct settings.</p>
78 <p>You can either build the Introjucer yourself from the source (in <code>juce/extras/Introjucer</code>), or download
79 a pre-built binary from <a href="http://sourceforge.net/projects/juce/files/juce/">SourceForge</a>.
80 <p>If you run it and select the 'new project' menu item, it'll walk you through the stages in setting up an app or
81 plugin project, and will automatically spit out a collection of project files for all the different platforms and compilers
82 that you need.</p>
84 <h1>Requirements for building on different platforms</h1>
86 <h3><a name="buildvc"></a>Microsoft Visual Studio 2005 or later</h3>
88 <p>JUCE projects should build and run with no extra set-up needed in all versions of Visual Studio from 2005 onwards.</p>
90 <p>By far the easiest way to create a new project is by letting the Introjucer do all the hard work, as explained above. But
91 if you really insist on creating one manually, here are a few tips:</p>
92 <ol>
93 <li>Create your new application project as an 'empty' WIN32 application - avoid saying yes to
94 MFC or any of the other rubbish that Visual Studio might offer you.</li>
95 <li>Make sure that your project has exception handling and run-time type information (RTTI) turned ON.</li>
96 <li>Have a look at the example projects, demo projects, or the API documentation about the
97 <code>JUCEApplication</code> class to find out how to create the application launch code.</li>
98 </ol>
100 <h3><a name="buildvc6"></a>Microsoft Visual Studio 6</h3>
102 <p>JUCE can still be compiled with VC6, although support for this will be dropped at some point in the future...
103 but here are some tips for getting it going:</p>
105 <ol>
106 <li>Install the latest Platform SDK from Microsoft.</li>
107 <li>Set up your include and library search paths. The first few items on your include path
108 should look like this (obviously you might have things installed in different places, but the
109 order is important!):
110 <pre>C:\Program Files\Microsoft Platform SDK\include
111 C:\Program Files\Microsoft Platform SDK\include\crt
112 C:\Program Files\Microsoft Platform SDK\include\mfc
113 C:\mycode\juce
114 ...</pre>
115 And the library search path should begin like this:
116 <pre>C:\Program Files\Microsoft Visual Studio\VC98\LIB
117 C:\Program Files\Microsoft Platform SDK\lib
118 C:\mycode\juce\bin
119 ...</pre>
120 </li>
121 </ol>
123 <p>Note that there's a rather lame bug in VC6 that causes an internal compiler error if you include
124 filenames that are too long. This can get triggered if you put the juce folder in a deeply-nested
125 directory (such as your user home directory). Unfortunately I think the only workaround for this
126 is to move the source tree to a shallower directory.</p>
128 <h3><a name="buildxcode"></a>XCode on OSX</h3>
130 <p>Use XCode 3 or later. You might want to tick the option to install the 10.4 SDK if you want to build binaries
131 that are backward-compatible with 10.4 and PPCs. If you're going to build for iOS, you'll obviously need the iOS version of XCode.</p>
133 <p>The easiest way to create a new application is by using the Intojucer, but here are a few tips if you're mad enough
134 to want to set one up manually:</p>
136 <ul>
137 <li>You'll need to add some or all of the following OSX frameworks to your "External Frameworks and Libraries" list,
138 depending on what features your application uses:
139 <pre>Cocoa.framework
140 Carbon.framework
141 IOKit.framework
142 CoreAudio.framework
143 CoreMIDI.framework
144 WebKit.framework
145 DiscRecording.framework
146 QTKit.framework
147 QuickTime.framework
148 QuartzCore.framework
149 AudioUnit.framework
150 AudioToolbox.framework
151 OpenGL.framework
152 AppKit.framework
153 CoreAudioKit.framework
154 CoreFoundation.framework</pre>
156 In future there may be other frameworks that you'll need to link with to support new JUCE features.
157 (It should be pretty obvious from the link-time error when one of these is missing).
158 </li>
159 <li>If you need to link to the JUCE static library rather than using the amalgamated files, you'll need to drag-and-drop
160 the <code>juce.xcodeproj</code> file into your project's "External Frameworks and Libraries" list. Then, expand this
161 item in the treeview, and inside there'll be an item "libjuce.a" or "libjucedebug.a" - drag-and-drop
162 this into the "link binary with libraries" phase inside the xcode target. When you select either a debug
163 or release juce build these entries will (usually) update themselves to show the correct debug or release library
164 name. If you want your project to automatically rebuild JUCE when you make changes to a JUCE file, you can
165 also add JUCE to your target's "Direct Dependency" list (show information for the target, and this is on the
166 "general" tab).<br/>Alternative ways of linking to JUCE would be to add the libjuce.a or libjucedebug.a library to
167 your "External Frameworks and Libraries" list, or to add switch to the linker's command-line of either "-ljuce"
168 or "-ljucedebug".</li>
169 </ul>
171 <h3><a name="buildlinux"></a>Linux with GCC</h3>
173 <p>Most linux distros should come with the tools you need. You may need to install the development packages of
174 freetype, X11 and pthreads if they're not already available.</p>
175 <p>If you've enabled the <code>JUCE_USE_XINERAMA</code> option, then you'll also need to install the Xinerama package.
176 And you'll need the <code>GL</code> and <code>GLU</code> libraries if you've enabled <code>JUCE_OPENGL</code></p>
177 <p>The makefiles that are generated by the Introjucer can be run by "<code>make CONFIG=Debug</code>",
178 or "<code>make CONFIG=Release</code>". You can also use "<code>make clean</code>" to delete the
179 intermediate files.</p>
181 <h3><a name="buildandroid"></a>Android</h3>
183 <ul>
184 <li>First of all, get yourself over to <a href="http://www.android.com">www.android.com</a>, and install the latest
185 Android SDK and NDK. Follow their instructions for installing Eclipse, and get to the point where you can
186 build and run some of the Android NDK demo apps in Eclipse before even thinking about trying to do anything with JUCE. The
187 Android development environment is a hugely complicated mish-mash of random bits of software, lashed together with scripts,
188 so don't expect a slick installation experience - be prepared to mess about. Once it's installed though, it all more-or-less
189 seems to work..</li>
190 <li>The only sensible way to create an Android JUCE project is with the Introjucer - doing it with Eclipse is a nightmare and if
191 you want to do it manaually, good luck. The Introjucer will produce a folder containing a whole heap of files, and you can open the
192 folder in Eclipse as a new project (use the "create project" option in Eclipse).</li>
193 <li>Eclipse should be able to automatically build the project and run it, but you can also build it from the command-line,
194 by setting your CWD to the Android build folder and using "<code>ant debug</code>" or "<code>ant release</code>"</li>
195 <li>Be careful that your project folder doesn't contain any spaces in its path - the Android tools can't handle this (!)</li>
196 <li>The structure that a JUCE app uses is to have a couple of boilerplate java classes which load and run a big native
197 library containing the juce library and all your app code. JUCE uses JNI internally to call java classes to interact with
198 the OS.</li>
199 <li>When you change some of your app code and need to recompile and re-test the app, Eclipse will usually (but certainly
200 not always) detect the change and re-compile the library. Unfortunately, if there are any errors during compilation, it'll
201 ignore them, and carry on trying to run the app, after having cleared the console so you can no longer see the errors that
202 occurred. In these cases, you probably want to build it using the command-line 'ant debug' so you can actually see what happened.</li>
203 <li>Although Eclipse does manage to rebuild the native library when you change some c++ code, it will fail utterly to re-package the
204 new library file or to re-install it on the target device. So far, my way of getting it to do this has been to touch one of the
205 java files whenever I change any c++, and this seems to kick it into life. If anyone has ever had the patience to become an
206 Eclipse expert and can suggest a proper solution to this, please let me know!!</li>
207 <li>Often, Eclipse gets confused and insist that there are "mistakes" in the java which prevent it from running the app. Needless
208 to say, there aren't really any mistakes, and usually doing a "clean" sorts it out.</li>
209 </ul>
211 <div class="ad">
212 <p class="ad">***</p>
213 </div>
214 <div class="bottomsection">
215 <p class="bottombar">- Copyright 2005 Raw Material Software Ltd -</p>
216 </div>
217 </div>
219 </body>
220 </html>